﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<set>
#include<map>
using namespace std;
//int main()
//{
//	multiset<int> s = { 4,2,7,2,4,8,4,5,4,9 };
//	auto it = s.begin();
//	while (it != s.end())
//	{
//		cout << *it << " ";
//		++it;
//	}
//	cout << endl;
//
//	int x;
//	cin >> x;
//	auto it1 = s.find(x);// 中序第一个 x
//	if (it1 != s.end())
//	{
//		cout << *it1 << endl;
//	}
//
//	return 0;
//}

//int main()
//{
//	//map<string, string> dict;
//	map<string, string> dict = { {"left", "左边"}, {"right", "右边"}, {"insert", "插入"}, {"string", "字符串"} };
//	pair<string, string> kv1("first", "第一个");
//	dict.insert(kv1);
//
//	dict.insert(pair<string, string>("second", "第二个"));
//	dict.insert(make_pair("sort", "排序"));
//	dict.insert({ "auto", "自动的" });// 构造函数支持隐式类型转换
//	dict.insert({ "auto", "自动的xxx" });// 不看value只看key
//	// 如果key相等，就不插进去，不更新
//	map<string, string>::iterator it = dict.begin();
//	while (it != dict.end())
//	{
//		it->second += "x";// 可以修改 value 不支持修改 key
//		//cout << (*it).first << ":" << (*it).second << endl;
//		cout << it->first << ":" << it->second << endl;
//		// 迭代器的 operator* 返回的是指向的对象引用
//		// 迭代器的 operator-> 返回的是指向的对象的地址
//		// it.operator->()->first // 才是无省略版
//		++it;
//	}
//	return 0;
//}

int main()
{
	string arr[] = { "苹果", "西⽠", "苹果", "西⽠", "苹果", "苹果", "西⽠",
"苹果", "⾹蕉", "苹果", "⾹蕉" };

	map<string, int> countMap;
	//统计次数
	for (const auto& str : arr)
	{
		/*
		auto ret = countMap.find(str);
		if (ret == countMap.end())
		{
			countMap.insert({ str, 1 });
		}
		else
		{
			ret->second++;
		}*/

		countMap[str]++;
		// 返回对应的value引用
	}

	return 0;
}